Automation system and method for the programming thereof

ABSTRACT

An automation system for programming appliances having programmable controllers, programmable devices and trigger devices that communicate over a communication link. The user programs the programmable devices by placing the programmable controller in its training mode, activating the trigger device to generate a trigger signed and places select programmable devices in their programmed state. After all of the desired programmable devices have been put in then programmed states, the user takes the programmable controller out of its training mode. When the programmable controller is out of its training mode, it monitors the communication link for the trigger event. Upon detecting the trigger event, the programmable controller sends messages to the selected programmable devices instructing them to go to their programmed state.

This application is a continuation of application No. 09/201,296, filedNov. 30, 1998 now U.S. Pat. No. 6,112,127, which is a continuation ofapplication Ser. No. 08/764,115, filed Nov. 6, 1996, now U.S. Pat. No.5,877,957.

TECHNICAL FIELD

An automation system for controlling the behavior of an environment inresponse to certain events.

BACKGROUND OF THE INVENTION

Currently, automation systems which are used to control the behavior ofan environment such as a home or office building are programmed usingeither a simple command language or using a graphical user interfacethat requires a computer with a monitor. These systems are expensive andrequire substantial investment by the user in time and energy to installand modify programming. Generally to make changes in existing programsof such systems a user must consult a user's manual or call aprogramming specialist. The overall utility of the automation system isdrastically reduced because the user finds it difficult to adapt thesystem to changing needs or to make additions, deletions ormodifications to the programs resident in such systems.

Home automation systems, or home management systems as they aresometimes called, commonly provide for control of lighting, heating andair conditioning, window shades or curtains, pool heaters and filtrationsystems, lawn sprinklers, ornamental fountains, audio/visual equipment,and other appliances. Home automation systems are frequently integratedwith a home security system so that when a fire alarm is raised, forexample, internal and external lights will be turned on. Securitysystems frequently include lighting control and other types of homeautomation as an option. Many larger homes incorporate a home theaterwhich requires a certain amount of automation for convenient operationand this automation is often extended to other parts of the dwelling. Infarms, the automation system will also control outbuilding heating andlighting and warn of off normal conditions in automated feedingmachinery and the like.

One form of automation system includes a central control unit thatmonitors environmental sensors and inputs from user controls andmaintains a schedule of pre-programmed time-of-day and day-of-the weekevents. Inputs to the central control are provided by dedicatedlow-voltage wiring, for example, from door and window sensors, signalscarried on power lines, RF signals, signals on existing telephone wiringand, occasionally, optical signals. The central control unit iscontrolled by a program that is either specifically built for theparticular installation or a general-purpose program with a userinterface that allows the owner or a technician employed by the owner tomake certain types of modifications. The interfaces to these programscan be anything from strings of digits entered on standard touch-tonekeypads, for example, Home Automation Inc.'s Omni Automation andSecurity System, to graphical user interfaces, for example, the Molex“Choices” software.

While the graphical user interfaces can be relatively easy to use, theyrequire the presence in the home of a personal computer and oftenrequire the system owner to purchase additional hardware and software.Systems that rely on touch tone keypads for input and one- and two-lineLCD for display are less expensive, but generally require the user toremember or, more likely, lookup arbitrary commands.

The Echelon Corporation has built home automation and industrial controlapparatus based on a signaling protocol they refer to as LonWorks thatuses a network of nodes each of which has one or more microprocessors.The system is designed to operate in a “cooperative computing”environment in which the individual nodes maintain their own programs.Programming of the individual nodes can be done by downloading newsoftware from a temporarily attached lap top computer or by downloadingsoftware over the LonWorks network. A similar approach has been taken byCEBus and has been used in many custom installations for larger homesand office buildings.

While such system 5 eliminate the central control unit, modifying thesoftware still requires the use of a PC-based system and usuallyrequires the user to acquire relatively expensive hardware and softwareand become proficient in the use of PC-based software.

It is thus desirable to provide an automation system that isinexpensive, easily installed, and easily programmable andreprogrammable. It is also desirable to provide a home automation systemthat can be programmed and reprogrammed by a user having little or noknowledge or experience in programming. It is also desirable to providean automation system that allows the incorporation of new and different,appliances and controllers without the system becoming obsolete.

SUMMARY OF THE INVENTION

According to a first aspect of the present invention there is provided amethod of programming at least one appliance to change state upon theoccurrence of a trigger event. The method includes the steps ofproviding at least one programmable devices coupled to the at least oneappliance, providing a programmable controller coupled to theprogrammable device where the programmable controller and programmabledevice communicate with one another. The programmable controller has atraining mode which, when selected, allows the at least one programmabledevice to be programmed to change the state of the first appliance uponthe occurrence of the trigger event. The user places the programmablecontroller in training mode, provides a trigger event, and changes thestate of the first appliance from an unprogrammed state to a programmedstate. The user then takes the programmable controller out of trainingmode so that the first appliance is now programmed so that upon the nextoccurrence of the trigger event the first appliance will change statesfrom its unprogrammed state to its programmed state.

According to a second aspect of the present invention there is provideda system of programming at least one appliance. The system includes aprogrammable device coupled to at least a first appliance where theprogrammable device detects the state of the first appliance, and aprogrammable controller coupled to and communicating with theprogrammable device over a communication link. The programmablecontroller has a training mode which, when selected, allows theprogrammable device to be programmed to change the state of the firstappliance upon the occurrence of the trigger event. When theprogrammable controller is put in the training mode and a trigger eventoccurs, and the state of the first appliance is changed and theprogrammable controller is taken out of the training mode, the firstappliance will change to its programmed state upon the next occurrenceof the trigger event.

According to a third aspect of the present invention there is provided amethod for programming a home automation system. The method includes thesteps of providing programmable devices located throughout a home. Eachprogrammable device is coupled to an appliance and each programmabledevice can detect the state of the appliance coupled to it. Providing aprogrammable controller located in the home and coupled to theprogrammable devices by a communication link. The programmablecontroller has a training mode which, when selected, allows selectedprogrammable devices to be programmed to change the state of theappliance connected thereto. Programming selected appliances to changefrom an unprogrammed state to a programmed state by placing selectedappliances in their respective unprogrammed state, placing theprogrammable controller in the training mode, providing a trigger event,changing the states of selected appliances from their unprogrammed stateto their programmed state and taking the programmable controller out ofthe training mode. The home is now programmed so that the nextoccurrence of the trigger event will cause the selected appliances tochange from their unprogrammed states to their programmed states.

According to a fourth aspect of the present invention there is provideda method of programming at least one appliance. The method includes thesteps of providing a programmable controller coupled by a communicationlink to the at least one appliance, placing the programmable controllerin the training mode, broadcasting a trigger event over thecommunication link wherein the trigger event is received and stored bythe programmable controller, changing the state of the at least oneappliance from an unprogrammed state to a programmed state, deleting thechange of state of the at least one appliance, broadcasting a messageover the communication link indicating that the programmed state of theat least one appliance wherein the message is received and stored by theprogrammable controller, and taking the programmable device out of thetraining mode. The at least one appliance is programmed to go to itsprogrammed state upon the occurrence of the trigger event.

According to a fifth aspect of the present invention there is provided amethod for automating an environment. The method includes the steps ofproviding programmable device coupled to a communication link providinga programmable controller having memory, wherein the programmablecontroller is coupled to the communication link wherein the programmablecontroller and programmable device communicate with one another over thecommunication link, providing a trigger device coupled to thecommunication link wherein the trigger device and programmablecontroller communicate with one another, placing the programmablecontroller in a training mode, activating the trigger device to generatea trigger signal, storing the trigger signal in the memory of theprogrammable control, placing the programmable device in a desiredstate, broadcasting a message that the programmable device is in thedesired state, storing the message in the memory of the programmablecontroller, taking the programmable controller out of the training mode,monitoring the communication link for the trigger event, detecting thetrigger event, and broadcasting a control signal over the communicationlink to the programmable device to change to its desired state.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic of an automation system according to a preferredembodiment of the present invention.

FIG. 1a is a schematic of an automation system according to anotherpreferred embodiment of the present invention.

FIG. 2 is a block diagram of the programmable controller shown in FIGS.1 and 1a according to a second preferred embodiment of the presentinvention.

FIG. 3 is a block diagram of the programmable device shown in FIG. 1according to a third preferred embodiment of the present invention.

FIG. 3a is a block diagram of the programmable device shown in FIG. 1aaccording to a preferred embodiment of the present invention.

FIGS. 4-5 are flow charts illustrating the communication protocolbetween the programmable controller and programmable device according toa preferred embodiment of the present invention.

FIG. 6 illustrates the front panel of a programmable controllerincorporated with a bank of switches according to a preferred embodimentof the present invention.

FIG. 7 illustrates the front panel of a programmable controllerincorporated with a bank of push buttons according to a preferredembodiment of the present invention.

FIGS. 8-12 are flow charts illustrating various program sequences.

FIG. 13 is a of the wiring and components schematic for a homeautomation system according to a preferred embodiment of the presentinvention.

FIG. 14 illustrates the front panel of a programmable clock according toa preferred embodiment of the present invention.

FIG. 15 illustrates a front panel of a programmable thermostat accordingto a preferred embodiment of the present invention.

FIG. 16 illustrates a front panel of a security interface according to apreferred embodiment of the present invention.

FIG. 17 is a schematic of a remote programmable light fixture.

FIG. 18 illustrates a front panel of a sequence interface according to apreferred embodiment of the present invention.

FIG. 19 illustrates a front panel of a whole house controller accordingto a preferred embodiment of the present invention.

DETAILED DESCRIPTION OF THE PRESENTLY PREFERRED EMBODIMENTS

FIG. 1 is a perspective view of an automation system 10 according to apreferred embodiment of the present invention. In its simplestembodiment the automation system 10 includes a programmable controller12, a programmable device 14, and a communication link 16 coupling theprogrammable controller 12 and the programmable device 14 so that theycan communicate with one another. The programmable controller 12 has auser accessible control or train button 18 to place the programmablecontroller 12 in training mode and take the programmable controller outof training mode. Training mode refers to the state in which theprogrammable controller 12 is in when it is being programmed. In apreferred embodiment the user accessible control 18 is a push downbutton which places the programmable controller 12 in training mode andwhen pushed again to release the button takes the programmablecontroller 12 out of training mode. The user accessible control 18 willbe referred to hereinafter as the “train button.” Optionally, theprogrammable controller 12 may also be equipped with an indicator 20such as an LED which is illuminated when the programmable controller 12is in training mode and is extinguished when the programmable controlleris not in training mode. The programmable device 14, which will bedescribed in detail hereinafter, broadcasts messages to and receivesmessages from the programmable controller 12 over communication link 16.

First a brief description of the operation of the automation system 10will be given followed by a detailed description of various preferredembodiments of the components of the automation system 10. Theautomation system 10 is programmed by demonstrating what should happenin response to a particular event. For example, if the automation system10 is installed in a home, the programmable controller 12 is preferablymounted in a wall of the home, for example, where the user will haveaccess to the train button 18. The programmable device 14 is alsolocated in the home and the communication link 16 between theprogrammable controller 12 and the programmable device 14 is provided bythe power lines in the home. If the user wants the programmable device14 to go to a programmed state upon the occurrence of a particularevent, i.e. a trigger event, the user first places the programmablecontroller 12 in its training mode by depressing the train button 18,and then causes a trigger signal which will be described hereinafter,that is received by programmable controller 12 over the communicationlink 16. The user then walks over to the programmable device 14 he orshe wishes to be controlled by the trigger event and puts theprogrammable device 14 in the desired programmed state. For example, ifthe programmable device is a lamp, the programmed state may be turningthe lamp on. The user then walks back to the programmable controller 12and takes it out of its training mode using the train button 18. Now theautomation system 10 is programmed so that upon the next occurrence ofthe trigger event, the programmable device 14 will go to the desiredprogrammed state. A detailed description of the communications overcommunication link 16 will be described hereinafter.

The trigger event can be generated in numerous ways. For example, aswill be seen hereinafter, programmable devices 14 frequently generatemessages which can be regarded as trigger events by the programmablecontroller 12. In operation, the programmable controller 12 can receivea number of messages that might be trigger events and other messagesthat might be generated by the user putting programmable devices 14 intotheir programmed state. The trigger event is selected as the event whichgenerated the first message received by the programmable controllerafter it is placed in training mode. For example, if the trigger eventis generated by an environmental sensor coupled to the communicationlink 16, the trigger event may be the detection of a movement in thefield of view of the sensor, the opening or closing of a door or window,the detection of an alarm condition. The trigger event can also begenerated by a programmable device where the trigger event is the changeof state of the programmable device. For example, the user may want asecond programmable device to go to a desired programmed state everytime a first programmable device goes to a particular programmed state.Putting the first appliance in its programmed state after theprogrammable controller 12 is in the training mode is the trigger event.Generally the trigger event can be any signal broadcast overcommunication link 16 to the programmable controller 12. The triggerevent is preferably the first detected signal by the programmablecontroller 12 after it has been put in training mode. Variousprogramming sequences and trigger events will be described hereinafter.

The programmable device 14 illustrated in FIG. 1 is able to broadcastmessages over the communication link 16 indicating a change in its stateand also receive signals over the communication link 16 to control itsoperation. The programmable device 14 includes but is not limited toappliances such as switches, lamps, dishwashers, curtain controls, audioand video equipment, thermostats, lawnsprinklers, etc.

FIG. 1a is a perspective view of an automation system 10′ according toanother preferred embodiment of the present invention. FIG. 1a issimilar to FIG. 1 except that the programmable device 14′ is dividedinto a programmable outlet 17 and an appliance 19. In a preferredembodiment, the programmable outlet 17 is plugged into the power lineand provides a socket into which an appliance 19, such as a lamp, can beplugged. The programmable outlet 17 detects a change in state of theappliance coupled thereto and broadcasts a message over thecommunication link 16′ that the appliance 19 has changed states. While alamp is shown as the appliance in this preferred embodiment, the presentinvention is not limited to such appliances but includes otherappliances such as switches, dishwashers, curtain controls, audio andvideo equipment, etc. The term appliance is used broadly to encompassany device that can change its state at least from one state to another.

While the particular embodiment described with reference to FIGS. 1 and1a have the power lines of a home establishing the communication link16, the present invention is not limited to such a communication media.Other media may be used such as RF transmissions, messages overdedicated wiring, messages sent as data over phone lines usingfrequencies not used by voice signals, optical signals, etc. Inaddition, while only one programmable device 14 is shown in FIGS. 1 and1a, a plurality of programmable devices can be provided to communicatewith one or a plurality of programmable controllers 12 all coupled bycommunication link 16. Later, a description of preferred embodiments ofthe present invention applied to a home automation system will bedescribed.

FIG. 2 is a block diagram of the programmable controller 12 shown inFIGS. 1 and 1a according to a preferred embodiment of the presentinvention. The programmable controller 12 includes a transceiver 22, amicroprocessor 26 preferably having both RAM memory 28 and ROM memory 30and train button 18. The microprocessor 26 is coupled to the transceiver22 which in turn is coupled to the communication link 16. Thetransceiver 22 receives messages from the communication link 16 andsends messages over the communication link 16. The train button 18 iscoupled to the microprocessor 26 and places the programmable controller12 either in or out of training mode. The programmable controller 12 hasan address identified with it which may be stored in ROM 30 oralternatively, an address selector 32, coupled to the microprocessor 26,can be provided to allow the address of the programmable controller 12to be selected.

FIG. 3 is a block diagram of the programmable device 14 shown in FIG. 1according to a preferred embodiment of the present invention. Theprogrammable device 14 includes a transceiver 34 appliance electronics35, and a microprocessor 40 preferably having both RAM memory 42 and ROMmemory 44. The microprocessor 40 is coupled to the transceiver 34, andappliance electronics 35. The transceiver 34 is coupled to thecommunication link 16 to receive and broadcast messages over thecommunication link 16. The programmable device 14 has an addressidentified with it which may be stored in ROM 42 or alternatively, anaddress selector 44, coupled to the microprocessor 40, can be providedto allow the address of the programmable device 14 to be selected.

In the preferred embodiment illustrated in FIG. 3, the programmabledevice 14 is like that shown in FIG. 1 in which it is integrated intothe appliance itself.

FIG. 3a is a block diagram of the programmable device 14′ shown in FIG.1a according to a preferred embodiment of the present invention. Theprogrammable device 14′ includes a transceiver 34′, a control relay 36,a load detector 38, and a microprocessor 40′ preferably having both RAMmemory 42′ and ROM memory 44′. The microprocessor 40′ is coupled to thetransceiver 34′, control relay 36 and load detector 38. The transceiver34′ is coupled to the communication link 16 to receive and broadcastmessages over the communication link 16. The load detector 38′ iscoupled to an appliance 19 (see FIG. 1a). The programmable device 14′has an address identified with it which may be stored in ROM 42 oralternatively, an address selector 44′, coupled to the microprocessor40′, can be provided to allow the address of the programmable device 14′to be selected.

In the preferred embodiment illustrated in FIG. 3, the programmabledevice 14′ is like that shown in FIG. 1a which includes an outlet thatis plugged into the power line and provides a socket into which theappliance 19, such as a lamp, for example, can be plugged into. In suchan embodiment, the load detector 38 detects a change in state of theappliance coupled to the programmable device 14′, i.e. the appliancebegins drawing power or ceases drawing power or the amount of power theappliance is drawing.

The communication between the programmable controller 12 and theprogrammable device will now be described with reference to the flowchart shown in FIG. 4. At block 50 it is determined whether theprogrammable controller 12 has been put in training mode. If it has not,control is passed to block 64 shown in FIG. 5. If it has then control ispassed to block 52 where it is determined whether a trigger event hasbeen detected over the communication link 16. If a trigger event hasbeen detected, that trigger event is recorded in the RAM 28 of theprogrammable controller 12 in block 54. If a trigger event has not beendetected, the programmable controller 12 waits for the detection of atrigger event.

After the trigger event has been detected and recorded, control ispassed to block 56 where it is determined whether a message has beenbroadcast by a programmable device 14 over the communication link 16. Ifa message is detected, control is passed to block 58 where the broadcastmessage is recorded in the RAM 28 of the programmable controller 12. Ifa broadcast message has not been detected, the programmable controller12 waits for a broadcast message. After a broadcast message has beendetected and recorded, control is passed to block 60 where it isdetermined whether the programmable controller 12 has been taken out oftraining mode. If it has, control is passed to block 62 and theprogramming is terminated. If not, control is passed back to block 56where the programmable controller 12 waits for another message to bebroadcast by another programmable device. This cycle continues until theprogramming has been terminated.

The recording of the trigger event and broadcast messages by theprogrammable controller creates a program stored by the programmablecontroller 12. Of course many programs formed by trigger events and thebroadcast messages associated therewith can be stored by theprogrammable controller. In FIGS. 1 and 1a only one programmable device14 is shown, however, it is to be understood that a plurality ofprogrammable devices can be coupled to the communication link 16 inwhich case the programmable controller 12 may receive more than onebroadcast message. In particular, according to a preferred embodiment ofthe present invention, the trigger signal will have associated with it aunique identifier which will be recorded by the programmable device 12.The message(s) broadcast by the programmable device(s) will each haveassociated with it the programmable device's unique address, preferablya byte or two in length, followed by a message. The message of thebroadcast signal may specify that the device has been turned on or offor that a particular percentage of energy is being drawn, for example.In addition, particularly for the embodiment shown in FIG. 1, themessage includes instructions which will be broadcast back to theprogrammable device to cause it to mimic the action that was just taken.This message will be broadcast back to the programmable device by theprogrammable controller upon the next occurrence of the trigger eventwhen the programmable controller 12 is out of training mode. This isparticularly useful when the programmable device 14 is like that shownin FIG. 1 because the programmable controller 12 does not have to knowanything about the configuration of the programmable device 14. Theprogrammable device 14 provides its own instruction in the message itbroadcasts to the programmable controller.

This allows the automation system 10 to easily accommodate new types ofappliances and controllers. For example, suppose that at some futuretime it became popular to install lighting where the user could controlnot only the intensity of a programmable light fixture (on, off andvarious dimming levels), but also the color of the light. For existingautomation systems, in order to add color control it would be necessaryfor system controllers to receive new programming that at the minimumexpanded the message set defining control of lighting from one thatreferred only to intensity to one that specified color and intensity.

In a preferred embodiment of the present invention a simpler and moregeneral solution to the problem of adding new devices to be controlledwithout making any modifications of the existing system componentsexists For example, in the case of a lighting appliance that allows theuser to adjust both color and intensity, a user control panel could beprovided so that the user could use one control to adjust intensity andanother control to adjust color of the indirect lights in a room. Usingprogramming methods previously discussed, the user could then programthe programmable controller to provide a soft “white” indirect lightwhen a small table lamp was turned on and to provide bright white lightwhen a particular floor lamp was illuminated. To make this programmingpossible without making any changes in the programmable controller, thenew lighting fixture would be a programmable device that would broadcasta message to the programmable controller that contained within thatmessage an instruction that should be sent back to the lightingappliance in order to duplicate the setting the user had selected fromthe control panel. The programmable controller stores the message thatshould be sent to the new lighting fixture, and in the future when thetrigger event was detected it would direct the stored message to the newlighting appliance. The programmable controller doesn't need to “know”anything about the operation of this new programmable device and doesn'teven need to know it is a light.

When the programmable controller 12 is out of its training mode, itmonitors the communication link 16 for recognizable trigger events. FIG.5 is a flow chart illustrating the communications over communicationlink 16 when the programmable controller 12 is out of its training mode.At block 64 it is determined whether the programmable controller 12 isout of its training mode. If it is not, control of the program istransferred to block 50 as shown in FIG. 4. If it is, control is passedto block 66 where it is determined whether a trigger event has beendetected. If one has not, control is returned to block 66 where theprogrammable controller 12 waits for the detection of a trigger event.Once a trigger event has been detected control is passed to block 68where the program stored in the RAM 28 of the programmable controller12, associated with the particular trigger event detected, is recalled.Then at block 70, the program stored in RAM 28 of the programmablecontroller 12 is broadcast over communication link 16. The programmabledevices 14 coupled to the communication link 16 listen for broadcastedmessages. At block 72 each programmable device 14 coupled tocommunication link 16 detects whether a message has been broadcast.Control is then passed to block 74 where it is determined whether theprogram broadcast includes any message for particular programmabledevices. If it does, control is passed to block 76 where theprogrammable devices detect this by matching their unique address withthe addresses in the broadcast program. If it recognizes its address,the programmable device receives its designated message in the programand executes the instructions associated with that message. If not,control is passed to block 78 where the message is ignored. Eachprogrammable device coupled to the communication link checks the programbroadcast by the programmable controller to see if any of the messagescontained therein are for it.

Signaling protocols such as X-10 (a proprietary protocol of the X-10Corporation), CEBus (an EIA standard backed by an industry consortium)or Lon Works (a standard owned and maintained by the EchelonCorporation) may be used for the communication protocol overcommunication link 16.

The programmable controller may be incorporated into more complexsystems depending upon the particular application to which it will besubjected. FIG. 6 illustrates a programmable controller 12′ incorporatedwith a bank of switches 100 according to a preferred embodiment of thepresent invention. FIG. 7 illustrates a programmable controller 12″incorporated with a bank of push buttons 110 according to a preferredembodiment of the present invention.

The programmable controllers 12′ and 12″ shown in FIGS. 6 and 7respectively are particularly useful for two types of programming. Afirst type, which will be referred to as “Type I” programming, causesprogrammable devices coupled over a communication link 16 to theprogrammable controller and selected to be programmed to all go to thesame state when the trigger event occurs. For the simplest variety ofType I programming, all of the selected programmable devices have justtwo states; for example, on and off. The trigger event also has twostates, for example, on and off. When the trigger event is put in its onstate, all of the selected programmable devices go to their on state.When the trigger event is put in its off state, all of the selectedprogrammable devices go to their off state. Of course, the programmabledevices and trigger event may have more than two states. For example,suppose that the trigger event is supplied by a programmable dimmerswitch and the selected programmable devices are light fixtures attachedto the programmable dimmer switch. For Type I programming, all of thelighting fixtures would respond to changes in the setting of the triggerdimmer in the same way. The programmable devices and trigger event donot have to be identical in state but they do have to be congruent inthe sense of having operational states that can be mapped onto eachother. For example, suppose there are three programmable devices 14′according to the preferred embodiment shown in FIG. 1a where eachappliance 19 is a lamp. If the user wants to program all of the lamps toturn on based upon the occurrence of a trigger event, the user performsthe following sequence:

press the train button 18′ to place the programmable controller 12′ inits training mode to commence programming;

supply a Type I type trigger event (i.e., depress one of the bank ofswitches 100)

turn lamp 1 on;

turn lamp 2 on;

turn lamp 3 off; and

deactivate the user control to take the programmable controller out oftraining mode to conclude programming.

Now, upon the next occurrence of the trigger event when the programmablecontroller is out of its training mode, lamps 1, 2 and 3 will all turnon. The actual state of the appliances during programming is immaterial,the important feature is that the user touched the appliance duringprogramming regardless of whether the appliance was turned on or off Thebank of switches 100 shown in FIG. 6 are particularly useful in such anapplication.

The second type of programming, which will be referred to as “Type II”programming, associates discrete events with specific commands to besent to the programmable devices. For Type II programming the state ofthe appliance during programming is material. Thus, if the abovesequence was programmed using Type II programming, lamps 1 and 2 wouldturn on and lamp 3 would turn off upon the occurrence of the triggerevent. The bank of push buttons 110 shown in FIG. 7 are particularlyuseful for Type II programming.

The determination of whether Type I or Type II programming is takingplace is arbitrary and the present invention is not limited to theparticular examples given. Whether the programming is of Type I or TypeII is inferred from the trigger event and from what programmable devicesthat are to be controlled by that trigger event. If the trigger event issupplied by an on/off switch and if the appliances to be controlled allhave on and off states, it may be assumed that Type I programming isbeing performed. If the trigger event is supplied by a momentarycontract device or the opening of a door, then it may be assumed thatType II programming is being performed. If the trigger event is suppliedby an appliance whose state is reversible, the lamp can be turned eitheron or off, it may be assumed that either Type I or Type II programmingis being performed. In a preferred embodiment it is assumed that theprogramming is Type II. While particular assumptions have been describedlinking certain events to Type I or Type II programming, otherembodiments, which would be obvious to those of ordinary skill in theart in light of the teachings of the present invention, may beimplemented. In a preferred embodiment, the programmable controllerdecides the programming mode.

The programmable controllers and programmable devices according to thepreferred embodiments of the present invention allow a user to create aprogram by a simple, program by demonstration technique. No knowledge ofprogramming is needed and creating, modifying or deleting programs canbe simply implemented by the user. The user simply physicallydemonstrates what is to occur upon the detection of a trigger event.

FIGS. 8-12 are flow charts illustrating examples of steps used toprogram various sequences in response to various trigger events. It isassumed that the programmable controller and programmable devices arelocated in a home automation system for all of the sequences shown inFIGS. 8-12. The sequence shown in FIG. 8 trains the house to turn Lamp 1on and Lamp 2 off when a door is opened. The sequence shown in FIG. 9causes Lamp 2 to be turned off and Lamp 3 turned on whenever Lamp 1 isturned on. In this case turning Lamp 1 on is the trigger event. Thesequence shown in FIG. 10 programs the house to turn Lamp 2 and Lamp 3on when Lamp 1 is turned on. In a preferred embodiment the last event,turning Lamp 1 off, is ignored since for the purpose of this trainingsequence Lamp 1 is a trigger event and all trigger events subsequent tothe occurrence of the first trigger event are ignored. In otherapplications it may not be appropriate to ignore subsequent triggerevents. The sequence shown in FIG. 11 programs the home to turn Lamps 1,2 and 3 on every time one of the bank of switches 100 shown in FIG. 6 isturned on. Because one of the bank of switches 100 was used as thetrigger event, it was assumed that Type I programming was implementedwhich cause all of the selected appliances to go to the same state asthe trigger event regardless of their actual state during programming.Alternatively, the sequence shown in FIG. 12 programs the house to turnLamps 1 and 3 off and Lamp 2 on every time one of the push buttons 110shown in FIG. 7 is depressed. Even though the same steps were performedafter the trigger event as occurred in FIG. 11, because one of the pushbuttons 110 of the programmable was used as the trigger event it wasassumed that Type II programming was implemented which causes all of theselected appliances to go to their individual programmed states. Asalready described the assumptions made with respect to Type I and TypeII programming are arbitrary and the present invention is not limited tothe particular examples given.

These are but some of the programming sequences that can be implementedusing the programmable controller and programmable devices according tothe present invention. The present invention, however, is not limited tothese particular sequences.

Adding, changing or deleting existing programs is also simplyimplemented. In a preferred embodiment, if the system has learned aresponse to a particular trigger event, to delete responses associatedwith that particular trigger event one need only put the programmablecontroller in the training mode, supply the particular trigger event andthen take the programmable controller out of the training mode. To clearall programming one need only put the programmable controller in thetraining mode and then directly take the programmable controller out ofthe training mode. Of course, in a particular application if the risk ofinadvertently erasing programming outweighs the convenience of beingable to “start over,” the designer could elect to not implement the“erase all” function, to require the user to perform the “erase all”action twice in succession before it took effect, or even to provide aseparate “delete” button that was protected from accidentalmanipulation.

The programmable controllers and programmable devices according to thepreferred embodiments already described can be incorporated into alarger system to support, for example, home automation. FIG. 13 is aschematic of the wiring and components for a home automation systemaccording to a preferred embodiment of the present invention. Theautomation system 200 preferably includes the following components: afirst programmable controller 202, a plurality of programmable devices204, a second programmable controller 206, a plurality of wall switches208, a programmable clock 210, a programmable light fixture 212, aprogrammable thermostat 214 coupled to a HVAC interface 216, a securityinterface 218 and a security panel 220, and a plurality of environmentalsensors 222. As will be described, all of these components communicatewith one another preferably over the power lines 224 of the house inwhich they are installed. The embodiment shown in FIG. 13 is merelyexemplary and the present invention is not limited to such anembodiment.

The programmable controller 202 is preferably of the type shown in FIG.1 where it has a user access control 203 to put the programmablecontroller 202 in and out of training mode. The plurality ofprogrammable devices 204 are preferably of the type shown in FIGS. 1 and1a. Programmable controller 206 is preferably of the type shown ineither FIGS. 6 or 7. The switches 208 are preferably programmable sothat they broadcast messages over the communication link 224 and receivemessages broadcast over the communication link 224.

The programmable clock 210 broadcasts messages over the power lines atcertain significant times, i.e., sunset, sunrise, and at times selectedby the user. FIG. 14 illustrates the front panel of a preferredembodiment of the programmable clock 210. In the preferred embodiment,the programmable clock has a display 230 to display the current date andtime. The second display 232 is used to display events, i.e., sunrise;or intervals, i.e., night, that are either preprogrammed or programmedby the user. Next button 234 allows the user to scroll through theevents or intervals. The user can select particular events or intervalsusing the Set, Hour and Minute buttons. In a preferred embodiment, theprogrammable clock 210 includes a train button 236 so that programmabledevices coupled over the power lines 224 can be programmed based onevents, i.e., sunrise; or intervals, i.e., night. For example, toprogram a lamp to turn on at sunset, the user would press the trainbutton on a programmable controller, press the train button on the clockinterface and then select the event “sunset” and then turn on the lampthat was to be turned on at sunset. If the user wished to program a lampto come on when a door was opened but only when it was dark out, theuser might use the sequence:

press train button on a programmable controller

open the door

press train button on the clock

select the interval “night time” from the clock display

press the train button on the clock again

turn on the lamp that is to come on when the door opens and it is darkout

press the train button on a programmable controller again

Variations in this sequence could be defined by one skilled in the artto suit the needs of particular installations or types of users.

Alternatively, the programmable clock need not have a train button toprogram appliances according to time. Instead, one can put anotherprogrammable controller in its training mode, select a time interval orevent using the programmable clock as the trigger event, place selectedprogrammable devices in their program state and take the programmablecontroller out of training mode to complete programming. Upon the nextoccurrence of the time interval or event used as the trigger event, theselected programmable devices will go to their programmed state.

To clear a time based program, one simply presses the train button,selects the interval for which programming is to be cleared and pressesthe learn button again.

FIG. 15 illustrates a preferred embodiment of a front panel ofprogrammable thermostat 214. The thermostat 214 has a display 240 todisplay temperature and displays 242 to indicate whether comfort oreconomy made has been selected. Because the thermostat 214 runs at lowvoltages supplied by the HVAC interface 11 it would be difficult, bothin design and installation, to build a thermostat that could get asignal to and from the power line. Instead, according to a preferredembodiment, the thermostat 214 includes a plug-in module (not shown)that will relay the messages between the thermostat 214 and power lines224 over an RF transceiver (not shown). Preferably, both the RFtransceiver and the thermostat 214 will have an LED (not shown) thatwill blink whenever there is a transmission to ease installation byverifying the RF signal path. Alternatively the thermostat can be linkedto the power line 224 using a two piece configuration where thethermostat would be linked to a box near the furnace by the existingthermostat wire. The box will communicate with the thermostat over aserial data interface and provide contact closures on screw terminalsfor the furnace and air conditioning. The box will also have an AC linecord which will provide its power and a connection for a power linetransceiver.

In order to program the thermostat 214 to go to an economy settingwhenever a wall switch near a front door is pressed the programmablecontroller might ordinarily need to know what commands to send to aparticular thermostat to cause it to enter economy mode. The preferredembodiment of the present invention simplifies this problem. To causethe thermostat to enter economy mode when a switch is pressed, the userwould start as usual by pressing the train button on a programmablecontroller and manipulating the switch that was to be the trigger event.The user would then press the train button on the thermostat, press theeconomy mode, and then press the train button again. When the trainbutton on the thermostat was pressed a second time, the thermostat wouldbroadcast a message that contained the instructions it should be sent inorder to duplicate the effect the user had just produced by manipulatingthe thermostat's controls. The programmable controller would receivethis message and store it. Later on when the trigger event occurred, theprogrammable controller would read the stored message and broadcast itfor the thermostat to receive and act on. Of course, rather than justput the thermostat in economy mode, the user could have done anysequence of operations (for example, defining the temperature foreconomy mode and then placing the unit in economy mode) after pressingthe thermostat's train button. An appliance could be constructed so thatmanipulating the controls after pressing the train button might or mightnot cause the appliance to immediately alter its functioning inaccordance with the user input. For example, if the appliance were acomplicated lighting fixture, it might be desirable for the user toobserver the consequences of changing the controls. Alternatively if theappliance were a security system it might not be desirable to change thestate of the security system when programming a controller. It isassumed that one skilled in the art could define the most appropriateway to apply the teachings presented here to particular devices.

FIG. 16 illustrates the front panel of a security interface 218according to a preferred embodiment of the present invention. Thesecurity interface 218 includes a group of conditional buttons 244 andan action button 246. It may also have its own train button 248. Totrain the house to do something when the security system is in aparticular state, i e. off, on, away, night, the user places aprogrammable controller in training mode, selects the security systemstate which provides the trigger event and places select programmabledevices in a programmed state. To activate the security system inresponse to a trigger event the user would first press the train buttonon a programmable controller and then cause the trigger event to occur.The user would then press the train button on the security system andthen operate the controls of the security system in a way that wouldnormally cause it to enter the desired state. The user would then pressthe train button on the security system a second time which would causethe security system to broadcast a message to the programmablecontroller that would contain the commands the security system should besent to cause the same effect as was produced by the user's manipulationof the controls. At the designer's option, a security interface could beconstructed so that after the train button was pressed, usermanipulation of the controls might have no effect on the currentoperation of the security system.

FIG. 17 is a schematic of a remote programmable lighting fixture. Thelight fixture includes a plurality of remotely located lamps 250, forexample, recessed ceiling lights, programmable devices 252 coupled tothe lamps 250 that can receive message from the power lines 224 andbroadcast messages over the power lines and a programmable sequencer 254coupled to the power lines. FIG. 18 illustrates the front panel of aprogrammable sequencer interface according to a preferred embodiment ofthe present invention. The interface includes a train button 256, a nextbutton 258, a reset button 260 and a select button 262.

In the preferred embodiment, the programmable controller is used with abank of momentary contact switches to associate arbitrary sets ofceiling lights with the various switches. The user begins by pressingthe train button on the programmable controller. The user then pressesthe train button on the programmable sequencer which causes all ofceiling lights to be extinguished. The user then presses the “next”button on the programmable sequencer, which causes one light to beilluminated, and presses the momentary contact switch the user wouldlike to have control that light. Of course, any one light can beassociated with several switches After the switch or switches have beenpressed, the user presses the next button again which extinguishes thefirst overhead light and illuminates the second. The user proceedsthrough all of the overhead lights, assigning to each light one or moreswitches that will turn it on and off. When the sequencer hasilluminated each light in the set in turn, it could so indicate byilluminating all the lights. While only two ceiling lamps areillustrated the present invention is not limited to the particularembodiment illustrated.

Including the elements shown in FIG. 13 allows more complicatedprogramming. For example, if the user wants to train a programmablecontroller to turn on a lamp when the front door is opened and it isnight, the user places the programmable controller in the training modeand opens the front door. The user signals that the actions consequenton opening the door are conditional on a timer event by first selectingthe appropriate time or interval on the programmable clock 210. The userthen presses the train button on the clock interface. After defining theconditional event, the user then “touches” the lamps that are to beturned on or off when the front door opens and finally takes theprogrammable controller out of the training mode. After this trainingthe lamps touched by the user will go on or off when the door is openedand it is night. If a user wants to train a switch to turn off thelights, turn the security system on and turn the thermostat down theuser, puts a programmable controller in training mode, depresses aswitch to provide the trigger event, turns the security system on usingthe controls on the security system interface, and presses the setbackswitch on the thermostat interface and takes the programmable controllerout of training mode.

If the user wants to train the house to turn off some light and put thethermostat in “economy” mode when the security system is in “away” mode,the user puts a programmable controller in training mode, presses anintelligent switch to provide the trigger event, turns off the lights,presses the train button on the security interface panel and thenpresses the Away button. The user then presses the train button on thesecurity interface panel a second time, presses the train button on thethermostat interface, press the “economy” button, and then presses thetrain button again. The user then takes the programmable controller outof training mode.

In another embodiment, the individual components of the master clockmodule 210, security interface and panel 218 and 220 shown in FIG. 13may be located in a whole house controller that is coupled to the powerlines. FIG. 19 illustrates the front panel of the house controlleraccording to a preferred embodiment of the present invention.

The whole house controller is preferably a menu driven device. In FIG.19 we show a line drawing of a user console for one preferred embodimentof a whole house controller. Included on its front panel is a displaywith several lines of text. Aligned with some of these lines of text arebuttons located on one or both sides of the display. When menus arepresented, users make selections by pressing the button aligned withtheir choice. To make it easier for users to see which text line isaligned with which button, it is common to place an arrow or othercharacter on the line of tet pointing to the button that should bepressed. For illustrative purposes, the menus shown here assume adisplay with 4 lines and 25 characters per line. Normally the panel willbe in the Idle state and will display Menu 0.1:

Monday April 1, 1996 9:15 am More Information >> [Menu 0.1]

If the user presses the side button>>on line 4 (More information), thesystem will display Menu 0.2:

Security: Off Console not locked 3 Sensors Bypassed 4 Active Passcodes[Menu 0.2]

The user console also includes a numeric keypad, that we show arrangedas a touchtone pad on a telephone would be, with a red key placed wherethe “*” key is conventionally found and a blue key where the “#” key istypically located. The Red button labeled No is typically used to abortoperations in progress, to terminate some automated sequence of events,or to retire an alarm. Normally an aborted operation will bring thesystem back to idle state with Menu 0.1 on the display. The Blue buttonlabeled Yes is typically used to indicate that the user had completedinput. Pressing the Blue button during a confirmation message will erasethe message and move on to the next screen.

When the console is in the Idle state, the four function buttons(Automation, Security, Test, and Lock) can be used to invoke proceduresto create home automation programming, administer the security systemtest home automation and security functions, and lock various parts ofthe system.

Pressing the console button labeled “Training” will cause the system todisplay Menu 1.0:

Home Automation Train House >> Explore System >> [Menu 1.0]

Selecting “Train House” lets the user teach the house new responses totrigger events, “Explore System” lets the user practice training thehouse without over writing any existing programming. Selecting TrainHouse in Menu 1.0 will generate a dialog where the user is asked if thehouse's response is to be triggered by a switch closure. If the usersays yes, the system asks the user to turn on or off the lamps andappliances to be controlled and then asks if these actions should betaken at some particular time and if the actions should depend on thestate of the security system. More, particularly, Menu 1.2 is firstdisplayed:

Learn what to do when a switch is pressed? Yes >> No >> [Menu 1.2]

If the user selects Yes from Menu 1.2, Menu 1.3 is displayed:

Press the switch you wish to use. Turn on/off devices it will control.BLUE when done [Menu 1.3]

If the user presses one of the switches next to the whole housecontroller, then that switch can be used to control any device in thehouse. Menu 1.4 then asks the user to decide if these response shouldoccur at any time of the day when the switch is pressed or only duringsome particular period.

The switch will control the devices at all times >> only certaintimes >> [Menu 1.4]

If the user opts for only certain times, Menu 1.5 is displayed:

Select time: Daylight >> Nightime >> Pick Start and Stop >> [Menu 1.5]

If the user selects “Pick Start and Stop” from Menu 1.5, Menu 1.6 isdisplayed:

Enter Starting Time Hour:Minute, _:_AM PM Blue when done [Menu 1.6]

then Menu 1.7 is displayed:

Enter Stopping Time Hour:Minute, _:_AM PM Blue when done [Menu 1.7]

Blue when done

If both times are AM or both are PM, or the first time is AM and thesecond is PM, Menu 1.8a is displayed:

Start at 9:00 am and continue to 11:15 am Correct >> Redo it >> [Menu1.8a]

If the first time is PM and the second is AM, Menu 1.8b is displayed:

From 10:15 PM to 6:15 next morning? Correct >> Redo it >> [Menu 1.8b]

If the user selects Redo it, at either Menu 1.8a or 1.8b, Menu 1.7 willbe displayed, otherwise Menu 1.9 is displayed:

The switch will control these devices in all security modes? >> aparticular mode? >> [Menu 1.9]

If the user selects a particular mode from Menu 1.9 menu 1.10 isdisplayed:

Select Security Mode Day Night Way Off >> To move highlight >> [Menu1.10]

If the user selected all security modes from Menu 1.9 or picked a modefrom Menu 1.10, Menu 1.11 is displayed:

Training Complete [Menu 1.11]

If the user selects “No” in Menu 1.2, Menu 1.12 is displayed:

Learn what to do when a sensor is tripped? Yes >> No >> [Menu 1.12]

If the user selects “Yes,” Menu 1.13 is displayed:

Activate trigger sensor. Turn on/off devices it will control. BLUE whendone [Menu 1.13]

When the system detects that a sensor that could be the trigger has beentripped, it will preferably sound the alarm for 2 seconds and displaythe name of the sensor (or zone) on the screen. When the user pressesthe Blue button, Menu 1.14 is displayed:

Trigger event: Front Door Press Blue when done Press Red to Start over[Menu 1.14]

After the Blue button is pressed, Menu 1.15 is displayed to ask if thehouse is always to respond this way to that sensor or do so only atcertain times of the day:

The sensor will control these devices at all times >> only certaintimes >> [Menu 1.15]

If the user response is to select only certain times, the same dialogwill occur as did for a response triggered by a switch closure and thenMenu 1.16 is displayed to ask if the response is to be contingent on thestatus of the security system:

The sensor will control these devices in all security modes? >> aparticular mode? >> [Menu 1.16]

If the answer is a particular mode, Menu 1.17 is displayed:

Select Security Mode Day Night Away Off >> To move highlight >> [Menu1.17]

If the user indicates the trigger is neither a switch nor a sensor, Menu1.18 is displayed:

Learn what do to at a particular time? Yes >> No >> [Menu 1.18]

If the user responds Yes to Menu 1.18 then Menu 1.19 is displayed:

Do something at Sunset >> Sunrise >> Enter a time >> [Menu 1.19]

If the user selects Enter a time from Menu 1.19, Menu 1.20 is displayed:

Hour:Minute, _:_AM PM Blue when done [Menu 1.20]

After entering a time, Menu 1.21 is displayed:

Turn on/off devices you want to change at <time descriptor> Press BLUEwhen done [Menu 1.21]

If the user selected Sunset or Sunrise, Menu 1.22 is displayed:

Should the Sunset/Sunrise actions be done in all security modes? >> aparticular mode? >> [Menu 1.22]

If the user had selected particular times those times would be indicatedinstead of “Sunrise/Sunset.”

If the user chooses a particular mode, Menu 1.23 is displayed:

Select Security Mode Day Night Away Off >> To move highlight >> [Menu1.23]

After the security mode is selected, Menu 1.24 is displayed:

Training Complete [Menu 1.24]

If the user has indicated that the action is not triggered by a switch,a sensor or a timer event, Menu 1.25 is displayed:

Learn what to do if the security status changes? Yes >> No >> [Menu1.25]

If the user selects “No,” the system goes to Idle state. Otherwise,Menus 1.26 and 1.27 are sequentially displayed:

Select Security Mode Day Night Away Off >> To move highlight >> [Menu1.26] Turn on/off devices you want to change when Security is<descriptor> Press BLUE when done [Menu 1.27]

The user is then asked in Menu 1.28 if entering the selected securitystate will control these devices at all times or only certain times:

Security system will control these devices at all times >> only certaintimes >> [Menu 1.28]

Once the user has picked a time, the “Training Complete” confirmationmessage is displayed.

If the user would like to play with the system without permanentlychanging any programming, they can accept the Explore System option fromthe Menu 1.0 elicited by pressing the Training button on the whole houseconsole. The sequence starts with a few screens of information and thenthey are given exactly the same set of prompts as would be seen if theyhad simply elected to train the system. After they have “written” theirprogram, they can explore its operation. When they are finished, theprogram is either dumped or saved.

Additional devices such as a telephone access module can be incorporatedinto the home automation system and appear to other system componentsjust like a programmable device.

While the presently preferred embodiments have been described withreference to communication over power lines, other communicationsbetween the intelligent switches and outlets may be used. For example,an RS-485 bus, proprietary bus, RF communication, etc. may be used. Theimportant feature is that the programmable controller, trigger deviceand programmable device must be able to communicate.

It is to be understood that the forms of the invention describedherewith are to be taken as preferred examples and that various changesin the shape, size and arrangement of parts may be resorted to, withoutdeparting from the spirit of the present invention or the scope of theclaims.

What is claimed is:
 1. An automation system comprising: at least oneprogrammable device operable in conjunction with an associated applianceto detect a state of the appliance; and a programmable controller incommunication with the programmable device and configured to receive atrigger signal and an indication of a change of the state of theappliance for programming response of the automation system tosubsequent occurrences of the trigger signal.
 2. The automation systemof claim 1 further comprising: a communication link coupling the atleast one programmable device and the programmable controller.
 3. Theautomation system of claim 2 wherein the communication link compriseselectric power lines.
 4. The automation system of claim 1 wherein theprogrammable controller comprises a user accessible control foractuating a training mode of the programmable controller.
 5. Theautomation system of claim 1 further comprising: a switch coupled to theprogrammable controller, the switch being actuable to produce thetrigger signal.
 6. The automation system of claim 1 further comprising:an environmental sensor coupled to the program controller and configuredto produce the trigger signal in response to an environmental condition.7. The automation system of claim 6 wherein the environmental sensorcomprises a motion detector.
 8. The automation system of claim 1 whereinthe at least one programmable device comprises: a programmable outletincluding a socket, the programmable outlet configured to selectivelyprovide electric power to an associated appliance plugged into thesocket.
 9. The automation system of claim 1 wherein the programmablecontroller comprises: a transceiver; a processor coupled to thetransceiver; memory coupled to the processor; and a user accessiblecontrol coupled to the processor for selecting a training mode of theprogrammable controller.
 10. A programmable home automation systemcomprising: one or more programmable devices, each programmable deviceassociated with an appliance and including means for detecting a stateof the associated appliance, means for producing a trigger signal, andmeans for producing an appliance state signal; communication meanscoupled with each programmable device for communicating data; and aprogrammable controller coupled with the communication means andincluding means for placing the programmable controller in a trainingmode, means for identifying the trigger signal, and means for detectingthe appliance state signal.
 11. The programmable home automation systemof claim 10 wherein each programmable device comprises: memory; and aprocessor operable in response to data and instructions stored in thememory.
 12. The programmable home automation system of claim 10 whereinthe programmable controller comprises: memory; and a processor operablein response to data and instructions stored in the memory.
 13. Theprogrammable home automation system of claim 10 wherein the means forplacing the programmable controller in the training mode comprises amanually actuatable switch.
 14. The programmable home automation systemof claim 10 wherein each programmable device comprises: devicecommunication means for two way data communication with thecommunication means.
 15. The programmable automation system of claim 14wherein the device communication means comprises a transceiver circuit.16. The programmable home automation system of claim 14 wherein theprogrammable controller comprises: controller communication means fortwo way data communication with the device communication means of eachprogrammable device via the communication means.
 17. The programmableautomation system of claim 16 wherein the controller communication meanscomprises a transceiver circuit.